package com.lesama.polymorphism;

/*
* 多态的前提：
* 1.有继承/实现
* 2.重写了方法
* 3.父类的引用指向子类的对象
* */

public class PolymorphismDemo1 {

    public static void main(String[] args) {
        useAnimal(new Cat());
        useAnimal(new Dog());
    }
    //    对象多态： Animal animal = new Dog()
    //    对象多态： Animal animal = new Cat()
    // 行为多态： animal.eat()  同一个方法根据传入的对象类型不同展现出来的行为方式也不同
    public static void useAnimal(Animal animal) {
        animal.eat();
    }

}

abstract class Animal {
    public abstract void eat();

}

class Dog extends Animal {

    @Override
    public void eat() {
        System.out.println("狗吃shit");
    }
}

class Cat extends Animal {

    @Override
    public void eat() {
        System.out.println("猫吃鱼");
    }
}